package co.inventario.presentacion;

import java.util.ArrayList;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import co.inventario.entidad.ConceptoKardexDTO;
import co.inventario.entidad.MovimientoKardexDTO;
import co.inventario.modelo.fachada.ConceptoKardexFachada;
@ManagedBean
public class ConceptoKardexBean {

	private ConceptoKardexDTO conceptoKardexDTO;
	private ArrayList<ConceptoKardexDTO> conceptoKardexDTOlista;
	private List<ConceptoKardexDTO> conceptoKardexDTOfilter;

	public ConceptoKardexDTO getConceptoKardexDTO() {
		return conceptoKardexDTO;
	}

	public void setConceptoKardexDTO(ConceptoKardexDTO conceptoKardexDTO) {
		this.conceptoKardexDTO = conceptoKardexDTO;
	}

	public ArrayList<ConceptoKardexDTO> getConceptoKardexDTOlista() {
		return conceptoKardexDTOlista;
	}

	public void setConceptoKardexDTOlista(ArrayList<ConceptoKardexDTO> conceptoKardexDTOlista) {
		this.conceptoKardexDTOlista = conceptoKardexDTOlista;
	}

	public List<ConceptoKardexDTO> getConceptoKardexDTOfilter() {
		return conceptoKardexDTOfilter;
	}

	public void setConceptoKardexDTOfilter(List<ConceptoKardexDTO> conceptoKardexDTOfilter) {
		this.conceptoKardexDTOfilter = conceptoKardexDTOfilter;
	}

	private void refescarTablaConcepto() {
		try {
			ConceptoKardexFachada conceptoKardexFachada = new ConceptoKardexFachada();
			conceptoKardexDTOlista = conceptoKardexFachada.consultarTodo();
		} catch (Exception exception) {
			System.out.println("Error producido refrescando la tabla movimientosssss: " + exception.getMessage());
		}
	}

	public ConceptoKardexBean() {
		conceptoKardexDTO = new ConceptoKardexDTO();
		MovimientoKardexDTO movimientoKardexDTO = new MovimientoKardexDTO();
		conceptoKardexDTO.setMovimientoKardexDTO(movimientoKardexDTO);
		refescarTablaConcepto();
	}

	public void crear() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (conceptoKardexDTO.getNvNombreConcepto() == null || "".equals(conceptoKardexDTO.getNvNombreConcepto().trim())) {
				context.addMessage(null, new FacesMessage("Error ", "El campo nombre no puede estar vacio."));
			} else {
				ConceptoKardexFachada conceptoKardexFachada = new ConceptoKardexFachada();
				conceptoKardexFachada.crear(conceptoKardexDTO);
				refescarTablaConcepto();
				context.addMessage(null, new FacesMessage("Correcto", "el registro se ha creado con exito."));
			}
		} catch (Exception exception) {
			context.addMessage(null, new FacesMessage("Error", "Se ha producido un error al crear el registro: " + exception.getMessage()));
		}
	}

	public void actualizar() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (conceptoKardexDTO.getNvNombreConcepto() == null || "".equals(conceptoKardexDTO.getNvNombreConcepto().trim())) {
				context.addMessage(null, new FacesMessage("Error ", "El campo nombre no puede estar vacio."));
			} else {
				ConceptoKardexFachada conceptoKardexFachada = new ConceptoKardexFachada();
				conceptoKardexFachada.actualizar(conceptoKardexDTO);
				refescarTablaConcepto();
				context.addMessage(null, new FacesMessage("Correcto", "el registro se ha actualizado con exito."));
			}
		} catch (Exception exception) {
			context.addMessage(null, new FacesMessage("Error", "Se ha producido un error al actualizar el registro: " + exception.getMessage()));
		}
	}

	public void consultartodo() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			if (conceptoKardexDTO.getInCodigoConcepto() == 0) {
				contexto.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			} else {
				refescarTablaConcepto();
			}
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}
}
